#!/usr/bin/env bash

# 数据库部署脚本
# 兼容macOS zsh环境

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 数据库配置信息（来自nacos配置）
DB_HOST="localhost"
DB_PORT="3306"
DB_USER="root"
DB_PASSWORD="Lv997945!"

# SQL目录
SQL_DIR="./sql"

# 数据库列表及对应的SQL文件
declare -A DATABASES=(
    ["oauth2_server"]="${SQL_DIR}/oauth2_server.sql"
    ["demo"]="${SQL_DIR}/demo.sql"
    ["notification_server"]="${SQL_DIR}/notification_server.sql"
    ["task_server"]="${SQL_DIR}/task_server.sql"
)

# 显示帮助信息
show_help() {
    echo -e "${BLUE}数据库部署脚本${NC}"
    echo "使用方法: ./deploy-databases.sh [选项]"
    echo ""
    echo "选项:"
    echo "  -h, --help     显示帮助信息"
    echo "  all            部署所有数据库（默认）"
    echo "  oauth2         部署oauth2_server数据库"
    echo "  demo           部署demo数据库"
    echo "  notification   部署notification_server数据库"
    echo "  task           部署task_server数据库"
    echo ""
    echo "示例:"
    echo "  ./deploy-databases.sh all          # 部署所有数据库"
    echo "  ./deploy-databases.sh demo         # 部署demo数据库"
    echo "  ./deploy-databases.sh oauth2 task  # 部署oauth2和task数据库"
}

# 部署单个数据库
deploy_database() {
    local db_name=$1
    local sql_file=${DATABASES[$db_name]}
    
    # 检查SQL文件是否存在
    if [ ! -f "$sql_file" ]; then
        echo -e "${RED}错误: SQL文件不存在 ${sql_file}${NC}"
        return 1
    fi
    
    echo -e "${YELLOW}正在部署数据库: ${db_name}${NC}"
    echo -e "${YELLOW}使用SQL文件: ${sql_file}${NC}"
    
    # 执行数据库部署命令
    command mysql -h"${DB_HOST}" -P"${DB_PORT}" -u"${DB_USER}" -p"${DB_PASSWORD}" < "${sql_file}"
    
    # 检查部署是否成功
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}数据库 ${db_name} 部署成功${NC}"
    else
        echo -e "${RED}数据库 ${db_name} 部署失败${NC}"
        return 1
    fi
}

# 部署所有数据库
deploy_all_databases() {
    echo -e "${YELLOW}开始部署所有数据库...${NC}"
    
    for db in "${!DATABASES[@]}"; do
        deploy_database ${db}
        if [ $? -ne 0 ]; then
            echo -e "${RED}部署数据库 ${db} 时出错${NC}"
            return 1
        fi
        echo -e "${BLUE}----------------------------------------${NC}"
    done
    
    echo -e "${GREEN}所有数据库部署完成${NC}"
}

# 主逻辑
main() {
    # 检查mysql命令是否存在
    if ! command -v mysql &> /dev/null; then
        echo -e "${RED}错误: 未找到mysql命令，请确保已安装MySQL客户端${NC}"
        echo -e "${YELLOW}提示: 在macOS上，可以使用 'brew install mysql' 安装MySQL客户端${NC}"
        exit 1
    fi
    
    # 检查SQL目录是否存在
    if [ ! -d "${SQL_DIR}" ]; then
        echo -e "${RED}错误: SQL目录不存在 ${SQL_DIR}${NC}"
        exit 1
    fi
    
    # 检查参数
    if [ $# -eq 0 ]; then
        deploy_all_databases
        exit 0
    fi
    
    # 处理选项
    case "$1" in
        -h|--help)
            show_help
            exit 0
            ;;
        all)
            deploy_all_databases
            exit 0
            ;;
        oauth2)
            deploy_database "oauth2_server"
            ;;
        demo)
            deploy_database "demo"
            ;;
        notification)
            deploy_database "notification_server"
            ;;
        task)
            deploy_database "task_server"
            ;;
        *)
            echo -e "${RED}错误: 未知选项 $1${NC}"
            show_help
            exit 1
            ;;
    esac
}

# 执行主逻辑
main "$@"